Ext.apply(Ext.form.VTypes, {
    uppercase: function(val, field) {
        var texto = val;
        texto = Ext.util.Format.uppercase(texto);
        field.setRawValue(texto);
        return true;
    }
});

Ext.define('Ext.form.field.ColorField', {
    extend: 'Ext.form.field.Picker',
    alias: 'widget.colorfield',

    requires: ['Ext.picker.Color'],
    editable: false,

    //triggerCls : Ext.baseCSSPrefix + 'form-date-trigger',

    showToday: true,

    useStrict: undefined,

    matchFieldWidth: false,

    initComponent: function() {
        var me = this;
        me.callParent();
    },

    initValue: function() {
        var me = this;
        me.callParent();
    },

    createPicker: function() {
        var me = this;

        return new Ext.picker.Color({
            pickerField: me,
            ownerCt: me.ownerCt,
            //renderTo: document.body,
            floating: true,
            hidden: true,
            focusOnShow: true,
            listeners: {
                scope: me,
                select: me.onSelect
            },
            keyNavConfig: {
                esc: function() {
                    me.collapse();
                }
            }
        });
    },

    onSelect: function(m, d) {
        var me = this;
        me.setValue(d);
        me.setFieldStyle('background :#' + d + ';color:#' + d);

        me.fireEvent('select', me, d);
        me.collapse();
    },

    onExpand: function() {
        var value = this.getValue();
        //this.picker.setValue(Ext.isDate(value) ? value : new Date());
    },

    onCollapse: function() {
        this.focus(false, 60);
    },

    reset: function() {
        var me = this;
        me.setFieldStyle('background :#FFFFFF');
        me.setValue();
    }
});

Ext.define('SistIntegral.FrmQR.Tema', {

    alias: "loginform",
    forward: true,

    Formulario: function(btn) {

        var StoreTemaE = Ext.create('Ext.data.Store', {
            model: 'TemaQR',
            pageSize: 25,
            proxy: {
                type: 'ajax',
                url: 'temaquejareclamo/IndexById/' + btn.Seleccion,
                reader: {
                    type: 'json',
                    root: 'grid'
                }
            }
        });

        StoreTemaE.on('load', function(store, records) {
            Ext.getCmp('FrmTemaQR').loadRecord(records[0]);
        });

        var Frm = Ext.create('Ext.form.Panel', {
            id: 'FrmTemaQR',
            frame: true,
            bodyPadding: '5',
            fieldDefaults: {
                msgTarget: 'side',
                labelAlign: 'left',
                labelWidth: 70,
                anchor: '100%'
            },
            items: [{
                    xtype: 'textfield',
                    name: 'NomTema',
                    allowBlank: false,
                    fieldLabel: 'Nombre',
                    //fieldStyle : 'text-transform: uppercase'
                    vtype: 'uppercase'

                }, {
                    xtype: 'textareafield',
                    name: 'DescTema',
                    allowBlank: false,
                    fieldLabel: 'Descripcion',
                    vtype: 'uppercase'
                }
            ],
            buttons: [{
                    text: 'Guardar',
                    handler: function() {
                        var form = this.up('form').getForm();
                        if (form.isValid()) {
                            form.submit({
                                url: btn.hrefTarget + (btn.Seleccion ? btn.Seleccion : ''),
                                success: function(form, action) {
                                    Ext.getCmp('gridTemaQR').getStore().load();
                                    Ext.getCmp('WTemaQR').close();
                                    Ext.MessageBox.show({
                                        msg: 'Registro Creado Correctamente...',
                                        progressText: 'Actualizando...',
                                        width: 300,
                                        icon: 'ext-mb-download'
                                    });
                                    setTimeout(function() {
                                        Ext.MessageBox.hide();
                                    }, 1000);
                                },
                                failure: function(form, action) {
                                    //...
                                }
                            });
                        }
                    }
                }, {
                    text: 'Limpiar',
                    handler: function() {
                        this.up('form').getForm().reset();
                    }
                }
            ]
        });
        if (btn.Seleccion) {
            StoreTemaE.load();
        }
        return Frm;
    },

    Window: function(btn) {
        var Seleccion;
        if (btn.itemId == 'edit') {
            Seleccion = Ext.getCmp('gridTemaQR').getSelectionModel().getSelection()[0];
            if (!Seleccion) {
                Ext.Msg.show({
                    title: 'Advertencia',
                    msg: 'Seleccione Tema a Editar',
                    icon: Ext.MessageBox.WARNING,
                    buttons: Ext.Msg.OK
                });
                return false;
            } else {
                btn.Seleccion = Seleccion.get('Id');
            }
        }

        var Item = this.Formulario(btn);

        var win = Ext.create('widget.window', {
            id: 'WTemaQR',
            title: btn.getText() + ' Tema',
            closable: true,
            bodyPadding: '5',
            bodyBorder: false,
            width: 400,
            minWidth: 200,
            height: 200,
            layout: 'fit',
            modal: true,
            items: [Item]
        });

        return win.show();
    }
});

Ext.define('SistIntegral.FrmQR.InvDen', {

    forward: true,

    Formulario: function(btn) {

        var StoreInvE = Ext.create('Ext.data.Store', {
            model: 'InvDenQR',
            pageSize: 25,
            proxy: {
                type: 'ajax',
                url: 'involucrado/IndexById/' + btn.Seleccion,
                extraParams: {
                    Tipo: false
                },
                reader: {
                    type: 'json',
                    root: 'grid'
                }
            }
        });

        StoreInvE.on('load', function(store, records) {
            Ext.getCmp('FrmInvQR').loadRecord(records[0]);
        });

        var Frm = Ext.create('Ext.form.Panel', {
            id: 'FrmInvQR',
            frame: true,
            bodyPadding: '5',
            fieldDefaults: {
                msgTarget: 'side',
                labelAlign: 'left',
                labelWidth: 70,
                anchor: '100%'
            },
            items: [{
                    xtype: 'textfield',
                    name: 'Nombre',
                    allowBlank: false,
                    fieldLabel: 'Nombre',
                    vtype: 'uppercase'
                }, {
                    xtype: 'textareafield',
                    name: 'Descripcion',
                    allowBlank: false,
                    fieldLabel: 'Descripcion',
                    vtype: 'uppercase'
                }, {
                    xtype: 'hiddenfield',
                    name: 'Tipo',
                    allowBlank: false,
                    fieldLabel: 'Descripcion',
                    value: btn.Tipo
                }
            ],
            buttons: [{
                    text: 'Guardar',
                    handler: function() {
                        var form = this.up('form').getForm();
                        if (form.isValid()) {
                            form.submit({
                                url: btn.hrefTarget + (btn.Seleccion ? btn.Seleccion : ''),
                                success: function(form, action) {
                                    if (btn.Tipo == false) {
                                        Ext.getCmp('gridInvQR').getStore().load();
                                    } else {
                                        Ext.getCmp('gridDenQR').getStore().load();
                                    }
                                    Ext.getCmp('WInvQR').close();
                                    Ext.MessageBox.show({
                                        msg: 'Registro Creado Correctamente...',
                                        progressText: 'Actualizando...',
                                        width: 300,
                                        icon: 'ext-mb-download'
                                    });
                                    setTimeout(function() {
                                        Ext.MessageBox.hide();
                                    }, 1000);
                                },
                                failure: function(form, action) {
                                    //...
                                }
                            });
                        }
                    }
                }, {
                    text: 'Limpiar',
                    handler: function() {
                        this.up('form').getForm().reset();
                    }
                }
            ]
        });
        if (btn.Seleccion) {
            StoreInvE.load();
        }
        return Frm;
    },

    Window: function(btn) {
        var Seleccion;
        if (btn.itemId == 'edit') {

            if (btn.Tipo == false) {
                Seleccion = Ext.getCmp('gridInvQR').getSelectionModel().getSelection()[0];
            } else {
                Seleccion = Ext.getCmp('gridDenQR').getSelectionModel().getSelection()[0];
            }

            if (!Seleccion) {
                Ext.Msg.show({
                    title: 'Advertencia',
                    msg: 'Seleccione Registro a Editar',
                    icon: Ext.MessageBox.WARNING,
                    buttons: Ext.Msg.OK
                });
                return false;
            } else {
                btn.Seleccion = Seleccion.get('Id');
            }
        }

        var Item = this.Formulario(btn);

        var win = Ext.create('widget.window', {
            id: 'WInvQR',
            title: btn.getText() + (btn.Tipo == false ? ' Involucrado' : ' Denunciado'),
            closable: true,
            bodyPadding: '5',
            bodyBorder: false,
            width: 400,
            minWidth: 200,
            height: 200,
            layout: 'fit',
            modal: true,
            items: [Item]
        });
        return win.show();
    }
});

Ext.define('SistIntegral.FrmQR.Indicador', {

    forward: true,
    Formulario: function(btn) {
        var StoreIndicadorE = Ext.create('Ext.data.Store', {
            model: 'Indicador',
            pageSize: 25,
            proxy: {
                type: 'ajax',
                url: 'indicador/IndexById/' + btn.Seleccion,
                reader: {
                    type: 'json',
                    root: 'grid'
                }
            }
        });

        StoreIndicadorE.on('load', function(store, records) {
            Ext.getCmp('FrmIndicador').loadRecord(records[0]);
            Ext.getCmp('campocolor').setFieldStyle('background :#' + records[0].get('Color') + ';color:#' + records[0].get('Color'));
        });

        var Frm = Ext.create('Ext.form.Panel', {
            id: 'FrmIndicador',
            frame: true,
            bodyPadding: '5',
            fieldDefaults: {
                msgTarget: 'side',
                labelAlign: 'left',
                labelWidth: 70,
                anchor: '100%'
            },
            items: [{
                    xtype: 'textfield',
                    name: 'NomIndicador',
                    allowBlank: false,
                    fieldLabel: 'Nombre',
                    vtype: 'uppercase'

                }, {
                    xtype: 'textareafield',
                    name: 'DescIndicador',
                    allowBlank: false,
                    fieldLabel: 'Descripcion',
                    vtype: 'uppercase'
                }, {
                    xtype: 'numberfield',
                    name: 'Escala',
                    allowBlank: false,
                    fieldLabel: 'Escala'
                }, {
                    xtype: 'colorfield',
                    id: 'campocolor',
                    name: 'Color',
                    allowBlank: false,
                    fieldLabel: 'Color'
                }, {
                    xtype: 'hiddenfield',
                    name: 'IdTipoIndicador',
                    allowBlank: false,
                    fieldLabel: 'Nombre',
                    value: btn.TipoIndicador

                }
            ],
            buttons: [{
                    text: 'Guardar',
                    handler: function() {
                        var form = this.up('form').getForm();
                        if (form.isValid()) {
                            form.submit({
                                url: btn.hrefTarget + (btn.Seleccion ? btn.Seleccion : ''),
                                success: function(form, action) {
                                    Ext.getCmp('gridIndicadorQR').getStore().load();

                                    Ext.getCmp('WIndicadorQR').close();
                                    Ext.MessageBox.show({
                                        msg: 'Registro Creado Correctamente...',
                                        progressText: 'Actualizando...',
                                        width: 300,
                                        icon: 'ext-mb-download'
                                    });
                                    setTimeout(function() {
                                        Ext.MessageBox.hide();
                                    }, 1000);
                                },
                                failure: function(form, action) {
                                    //...
                                }
                            });
                        }
                    }
                }, {
                    text: 'Limpiar',
                    handler: function() {
                        this.up('form').getForm().reset();
                    }
                }
            ]
        });
        if (btn.Seleccion) {
            StoreIndicadorE.load();
        }
        return Frm;
    },

    Window: function(btn) {
        var Seleccion;
        if (btn.itemId == 'edit') {

            Seleccion = Ext.getCmp('gridIndicadorQR').getSelectionModel().getSelection()[0];

            if (!Seleccion) {
                Ext.Msg.show({
                    title: 'Advertencia',
                    msg: 'Seleccione Registro a Editar',
                    icon: Ext.MessageBox.WARNING,
                    buttons: Ext.Msg.OK
                });
                return false;
            } else {
                btn.Seleccion = Seleccion.get('Id');
            }
        }

        var Item = this.Formulario(btn);

        var win = Ext.create('widget.window', {
            id: 'WIndicadorQR',
            title: btn.getText() + btn.Titulo,
            closable: true,
            bodyPadding: '5',
            bodyBorder: false,
            width: 400,
            minWidth: 200,
            height: 280,
            layout: 'fit',
            modal: true,
            items: [Item]
        });

        return win.show();
    }
});


Ext.define('SistIntegral.FrmQR.QuejaReclamo', {

    forward: true,

    Formulario: function(btn) {
        //CREACION DEL OBJETO COMBO CASERIO
        var StoreCaserioFQR = Ext.create('Ext.data.Store', {
            model: 'CaserioQR',
            pageSize: 15,
            proxy: {
                type: 'ajax',
                url: 'caserio/Index',
                reader: {
                    type: 'json',
                    root: 'grid'
                }
            }
        });

        var cmbCaserio = Ext.create('Ext.form.ComboBox', {
            fieldLabel: 'Caserio',
            name: 'IdCaserio',
            allowBlank: false,
            store: StoreCaserioFQR,
            enableKeyEvents: true,
            minChars: 2,
            id: 'cmbCaserio',
            displayField: 'Caserio',
            forceSelection: true,
            queryMode: 'remote',
            triggerAction: 'all',
            valueField: 'Id',
            emptyText: 'Seleccione Caserio',
            //width:300,
            listConfig: {
                loadingText: 'Buscando...',
                emptyText: 'Sin Resultados',
                getInnerTpl: function() {
                    return '<a>' +
                        '<h3></span>{Caserio}' + '</h3>' +
                        '<h4 class="ccpp">CCPP: {Centropoblado}</h4>' +
                        '<h5 class="ccpp">DIST: {Distrito}</h5>' +
                        '</a>';
                }
            },
            pageSize: 15
        });
        //FIN DEL OBJETO

        //CREACION DEL OBJETO COMBO TEMA
        var StoreTemaQR = Ext.create('Ext.data.Store', {
            model: 'TemaQR',
            pageSize: 15,
            proxy: {
                type: 'ajax',
                url: 'temaquejareclamo/index',
                reader: {
                    type: 'json',
                    root: 'grid'
                }
            }
        });

        var cmbTema = Ext.create('Ext.form.ComboBox', {
            fieldLabel: 'Tema',
            allowBlank: false,
            name: 'IdTemaQuejaReclamo',
            store: StoreTemaQR,
            enableKeyEvents: true,
            minChars: 2,
            id: 'cmbTema',
            displayField: 'NomTema',
            forceSelection: true,
            queryMode: 'remote',
            triggerAction: 'all',
            valueField: 'Id',
            emptyText: 'Seleccione Tema',
            listConfig: {
                loadingText: 'Buscando...',
                emptyText: 'Sin Resultados',
                getInnerTpl: function() {
                    return '<a>' +
                        '<h3></span>{NomTema}' + '</h3>' +
                        '</a>';
                }
            },
            pageSize: 15
        });
        //FIN DEL OBJETO

        //CREACION DEL OBJETO COMBO RIESGO QUEJA RECLAMO
        var StoreRiesgoFQR = Ext.create('Ext.data.Store', {
            model: 'Indicador',
            pageSize: 15,
            proxy: {
                type: 'ajax',
                url: 'indicador/index',
                extraParams: {
                    TipoIndicador: 1
                },
                reader: {
                    type: 'json',
                    root: 'grid'
                }
            }
        });

        var cmbRiesgo = Ext.create('Ext.form.ComboBox', {
            fieldLabel: 'Riesgo',
            allowBlank: false,
            name: 'IdRiesgo',
            store: StoreRiesgoFQR,
            enableKeyEvents: true,
            minChars: 2,
            id: 'cmbRiesgo',
            displayField: 'NomIndicador',
            forceSelection: true,
            queryMode: 'remote',
            triggerAction: 'all',
            valueField: 'Id',
            emptyText: 'Seleccione Riesgo',
            disabled: (btn.itemId == 'edit' ? true : false),
            listConfig: {
                loadingText: 'Buscando...',
                emptyText: 'Sin Resultados',
                //#FFFF00
                getInnerTpl: function() {
                    return '<a>' +
                        '<h3 style= "background:' + '#{Color}' + '" ><span  >{NomIndicador}' + '</span></h3>' +
                        '</a>';
                }
            },
            pageSize: 15
        });
        //FIN DEL OBJETO

        var StoreQuejaReclamoE = Ext.create('Ext.data.Store', {
            model: 'QuejaReclamo',
            proxy: {
                type: 'ajax',
                url: 'quejareclamo/IndexById/' + btn.Seleccion,
                reader: {
                    type: 'json',
                    root: 'grid'
                }
            }
        });

        StoreQuejaReclamoE.on('load', function(store, records) {
            Ext.getCmp('FrmQuejaReclamo').loadRecord(records[0]);

            var StoreCaserioE = Ext.create('Ext.data.Store', {
                model: 'CaserioQR',
                proxy: {
                    type: 'ajax',
                    url: 'caserio/IndexById/' + records[0].get('IdCaserio'),
                    reader: {
                        type: 'json',
                        root: 'grid'
                    }
                }
            });

            StoreCaserioE.on('load', function(store, records) {
                StoreCaserioFQR.loadRecords(records);
                Ext.getCmp('cmbCaserio').setValue(records[0].get('Id'));
            });

            StoreCaserioE.load();

            var StoreTemaQRE = Ext.create('Ext.data.Store', {
                model: 'TemaQR',
                proxy: {
                    type: 'ajax',
                    url: 'temaquejareclamo/IndexById/' + records[0].get('IdTemaQuejaReclamo'),
                    reader: {
                        type: 'json',
                        root: 'grid'
                    }
                }
            });

            StoreTemaQRE.on('load', function(store, records) {
                StoreTemaQR.loadRecords(records);
                Ext.getCmp('cmbTema').setValue(records[0].get('Id'));
            });

            StoreTemaQRE.load();

            var StoreRiesgoFQRE = Ext.create('Ext.data.Store', {
                model: 'Indicador',
                proxy: {
                    type: 'ajax',
                    url: 'indicador/indexById/' + records[0].get('IdRiesgo'),
                    extraParams: {
                        TipoIndicador: 1
                    },
                    reader: {
                        type: 'json',
                        root: 'grid'
                    }
                }
            });

            StoreRiesgoFQRE.on('load', function(store, records) {
                StoreRiesgoFQR.loadRecords(records);
                Ext.getCmp('cmbRiesgo').setValue(records[0].get('Id'));
            });

            StoreRiesgoFQRE.load();

            //Ext.getCmp('campocolor').setFieldStyle('background :#'+records[0].get('Color')+';color:#'+records[0].get('Color'));
        });

        var Frm = Ext.create('Ext.form.Panel', {
            id: 'FrmQuejaReclamo',
            frame: true,
            bodyPadding: '5',
            fieldDefaults: {
                msgTarget: 'side',
                labelAlign: 'left',
                labelWidth: 70,
                anchor: '100%'
            },
            items: [{
                    xtype: 'datefield',
                    name: 'FechaReporte',
                    allowBlank: false,
                    fieldLabel: 'Fecha',
                    vtype: 'uppercase'

                },
                cmbCaserio, {
                    xtype: 'textareafield',
                    name: 'Reclamo',
                    allowBlank: false,
                    fieldLabel: 'Reclamo',
                    vtype: 'uppercase'
                },
                cmbTema, cmbRiesgo
            ],
            buttons: [{
                    text: 'Guardar',
                    handler: function() {
                        var form = this.up('form').getForm();
                        if (form.isValid()) {
                            form.submit({
                                url: btn.hrefTarget + (btn.Seleccion ? btn.Seleccion : ''),
                                success: function(form, action) {
                                    Ext.getCmp('gridQuejaReclamo').getStore().load();

                                    Ext.getCmp('WQuejaReclamo').close();
                                    Ext.MessageBox.show({
                                        msg: 'Registro Creado Correctamente...',
                                        progressText: 'Actualizando...',
                                        width: 300,
                                        icon: 'ext-mb-download'
                                    });
                                    setTimeout(function() {
                                        Ext.MessageBox.hide();
                                    }, 1000);
                                },
                                failure: function(form, action) {
                                    //...
                                }
                            });
                        }
                    }
                }, {
                    text: 'Limpiar',
                    handler: function() {
                        this.up('form').getForm().reset();
                    }
                }
            ]
        });
        if (btn.Seleccion) {
            StoreQuejaReclamoE.load();
        }
        return Frm;
    },

    Window: function(btn) {
        var Seleccion;
        if (btn.itemId == 'edit') {

            Seleccion = Ext.getCmp('gridQuejaReclamo').getSelectionModel().getSelection()[0];

            if (!Seleccion) {
                Ext.Msg.show({
                    title: 'Advertencia',
                    msg: 'Seleccione Registro a Editar',
                    icon: Ext.MessageBox.WARNING,
                    buttons: Ext.Msg.OK
                });
                return false;
            } else {
                btn.Seleccion = Seleccion.get('IdQuejaReclamo');
            }
        }

        var Item = this.Formulario(btn);

        var win = Ext.create('widget.window', {
            id: 'WQuejaReclamo',
            title: btn.getText() + btn.Titulo,
            closable: true,
            bodyPadding: '5',
            bodyBorder: false,
            width: 400,
            minWidth: 200,
            height: 300,
            layout: 'fit',
            modal: true,
            items: [Item]
        });

        return win.show();
    }
});